home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MACD 5
/
MACD 5.bin
/
workbench
/
blankery
/
xsb
/
prefs.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-06-26
|
3KB
|
122 lines
#include "xsb.h"
#include "startup.h"
extern struct Library *XSBBase;
extern char xsbname[];
static struct TextAttr top80={"topaz.font",8,0,0};
void doprefs(char *name)
{
struct XSBParams *xp,*xpp;
struct Window *w;
struct Gadget *g=0,*lastg,*ga[10],*gp;
struct NewGadget ng;
int argcount=0;
int c,ypos=15;
struct IntuiMessage *im;
struct VisualInfo *vi=0;
long code,class;
int running=1;
if(!(XSBBase=OldOpenLibrary(name))) {
doreq("XSBCX","Couldn't open blanker library\n%s","Cancel",name);
return;
}
if(!(xp=XSBGetParams())) {
doreq(name,"This blanker don't\nhas preferences","Cancel");
CloseLibrary(XSBBase);
return;
}
xpp=xp;
while(xpp) { argcount++; xpp=xpp->next; }
xpp=xp;
if(!(w=OpenWindowTags(0,WA_Top,30,WA_Left,120,
WA_Width,320,WA_Height,50+argcount*16,
WA_IDCMP,GADGETUP|GADGETDOWN|MOUSEMOVE|CLOSEWINDOW,
WA_AutoAdjust,TRUE,
WA_Title,name,
WA_Flags,ACTIVATE|RMBTRAP|WINDOWDRAG|WINDOWCLOSE|WINDOWDEPTH,
TAG_DONE))) goto xit;
vi=GetVisualInfo(w->WScreen,TAG_DONE);
lastg=CreateContext(&g);
ng.ng_LeftEdge=19; ng.ng_TopEdge=30+argcount*16;
ng.ng_Width=60; ng.ng_Height=13;
ng.ng_GadgetText="Save";
ng.ng_GadgetID=20;
ng.ng_TextAttr=&top80;
ng.ng_Flags=PLACETEXT_IN;
ng.ng_VisualInfo=vi;
lastg=CreateGadget(BUTTON_KIND,lastg,&ng,TAG_DONE);
ng.ng_GadgetText="Load";
ng.ng_LeftEdge=92;
ng.ng_GadgetID++;
lastg=CreateGadget(BUTTON_KIND,lastg,&ng,TAG_DONE);
ng.ng_GadgetText="Use";
ng.ng_LeftEdge=165;
ng.ng_GadgetID++;
lastg=CreateGadget(BUTTON_KIND,lastg,&ng,TAG_DONE);
ng.ng_GadgetText="Cancel";
ng.ng_LeftEdge=240;
ng.ng_GadgetID++;
lastg=CreateGadget(BUTTON_KIND,lastg,&ng,TAG_DONE);
c=0;
ng.ng_LeftEdge=100; ng.ng_Width=170; ng.ng_Height=14; ng.ng_GadgetID=1;
ng.ng_Flags=NG_HIGHLABEL|PLACETEXT_LEFT;
while(xpp) {
ng.ng_GadgetText=xpp->text;
ng.ng_TopEdge=ypos;
ypos+=16;
switch(xpp->type) {
case XSBP_BOOL: ng.ng_TopEdge++; lastg=CreateGadget(CHECKBOX_KIND,lastg,&ng,GTCB_Checked,xpp->value->xsb_arg,TAG_DONE); ng.ng_TopEdge--; break;
case XSBP_STRING: lastg=CreateGadget(STRING_KIND,lastg,&ng,GTST_MaxChars,40,GTST_String,xpp->value->xsb_string,TAG_DONE); break;
case XSBP_INTEGER: lastg=CreateGadget(INTEGER_KIND,lastg,&ng,GTIN_MaxChars,40,GTIN_Number,xpp->value->xsb_arg,TAG_DONE); break;
case XSBP_CYCLE: lastg=CreateGadget(CYCLE_KIND,lastg,&ng,GTCY_Labels,xpp->labels,GTCY_Active,xpp->value->xsb_arg,TAG_DONE); break;
case XSBP_SLIDER: lastg=CreateGadget(SLIDER_KIND,lastg,&ng,
GTSL_Max,xpp->max,GTSL_Min,xpp->min,
GTSL_Level,xpp->value->xsb_arg,
PGA_Freedom,LORIENT_HORIZ,
GTSL_MaxLevelLen,4,
GTSL_LevelPlace,PLACETEXT_RIGHT,
GA_RelVerify,TRUE,
GTSL_LevelFormat,"%-4ld",TAG_DONE); break;
}
ga[c++]=lastg;
xpp=xpp->next;
ng.ng_GadgetID++;
}
AddGList(w,g,-1,-1,0);
RefreshGList(g,w,0,-1);
GT_RefreshWindow(w,0);
while(running) {
while(!(im=GT_GetIMsg(w->UserPort))) WaitPort(w->UserPort);
code=im->Code; class=im->Class;
gp=im->IAddress;
GT_ReplyIMsg(im);
if(class==CLOSEWINDOW) break;
if(class==GADGETUP) {
switch(gp->GadgetID) {
case 20:
case 21:
case 22:
case 23: running=0; break;
}
}
}
xit:
if(g) FreeGadgets(g);
if(vi) FreeVisualInfo(vi);
if(w) CloseWindow(w);
CloseLibrary(XSBBase);
}